//将对象树里所有的number类型叶子相加


//思路: 使用递归不断将下一层对象传递下去,直到没有下一层为止,将叶子节点为number类型的数据返回

function sumForTree(sum=0,tree){

    //终止条件
    if(tree === null){
        return 0; //因为是相加 这里返回一个0
    }
    //对传进来的对象进行遍历
    for(let key in tree){
        if(typeof tree[key] === 'number'){ //如果当前节点是数字类型的话,就将该数组相加到sum中
            sum += tree[key];
        }else{
            console.log(tree[key]);
            sum += sumForTree(0,tree[key]); //如果当前节点是对象类型的话,就将该对象传递下去
        }
    }
    return sum;
}

let tree = {
    a: 1,
    b: 2,
    c: 3,
    d: {
        e: 4,
        f: 5,
        g: 6
    },
    h: 7,
    i: 8,
    j: 9,
    k: 10,
    l: 11,
    m: 12
}

console.log(sumForTree(0,tree)); //78